package sixth;
class Person5{
    private String name;
    private int age;
    public Person5(String name,int age){
       this.setAge(age);
       this.setName(name);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public String getInfo(){
        return "姓名："+getName()+",年龄："+getAge();
    }
}
class Student5 extends Person5{
    private String school;
    public Student5(String name,int age,String school){
        super(name,age);//调用父类中有两个参数的构造方法
        this.setSchool(school);
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }
    public String getInfo(){//覆写父类的getInfo方法
        return "姓名："+getName()+",年龄:"+getAge()+",学校:"+getSchool();
    }
}
public class 用super调用父类指定关键字 {

    public static void main(String[] args) {
        Student5 s = new Student5("张三", 17, "常州信息职业技术学院");
        System.out.println(s.getInfo());
    }
}
/**
 * this和super的区别：
 * ①属性访问:
 * this访问本类中的属性 如果本类中没有此属性 则从父类中继续寻找
 * super访问父类中的属性
 * ②方法：
 * this访问本类中的方法，如果本类中没有此方法，则从父类中继续寻找
 * super直接访问父类中的方法
 * ③调用构造
 * this调用本类的构造，必须放在构造方法的首行
 * super调用父类的构造方法，必须放在构造方法的首行
 * ④特殊
 * this表示当前对象
 * super无此概念
 *
 * 还有一点注意：
 * this和super都可以调用构造方法 但是两者是不可以同时出现的 因为两者调用的时候都必须放在构造方法的首行
 * 另外，无论子类如何操作 最终都要先调用父类中的构造方法
 */